package com.ruoyi.system.mapper;

import com.ruoyi.system.domain.MaterialThree;
import com.ruoyi.system.domain.MaterialTwo;
import com.ruoyi.system.domain.PickCondition;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 材料Mapper接口
 * 
 * @author ruoyi
 * @date 2020-12-16
 */
public interface WatehouseMaterialMapper
{

    /**
     * 查询材料列表
     *
     * @param map 材料
     * @return 材料明细集合
     */
    public List<MaterialTwo> selectMaterialList(HashMap map);
    /** @Description:
    * @Param: [map]
    * @returns: java.util.List<com.ruoyi.system.domain.MaterialTwo>
    * @Author: Administrator
    * @Date: 2020/12/22 16:24
    **/
    public List<MaterialTwo> selectWarehousematerialBywid(HashMap map);
    public List<MaterialTwo> selectMaterialListall(HashMap map);
    /** @Description:  通过id查询材料
    * @Param: [mid]
    * @returns: com.ruoyi.system.domain.MaterialTwo
    * @Author: Administrator
    * @Date: 2020/12/22 19:02
    **/

    public MaterialTwo selectaterialByid(@Param("mid") long mId);
    /** @Description: 修改仓库
     * @Param: [wid]
     * @returns: int
     * @Author: Administrator
     * @Date: 2020/12/22 18:48
     **/

    public int updateMaterial(MaterialTwo materialTwo);
     /* 查询材料列表
     *
     * @param  材料
     * @return 材料明细集合
     */
    public Double selectMateerialcontent(@Param("mid") long mid, @Param("wid") long wid);
    //数量
    /**
     * 查询材料列表
     *
     * @param iDate 材料
     * @return 材料明细集合
     */
    public MaterialTwo selectinventorylList(HashMap map);
    public MaterialTwo selectinventorylList2(HashMap map);

    /**
     * 新增材料
     *
     * @param material 材料
     * @return 结果
     */
    public int insertMaterial(MaterialThree material);
    /**
     * 材料是否有库存
     *
     * @param mid 仓库ID
     * @return 结果
     */
    public int selectMateialiCount(@Param("mid")Long mid, @Param("wid") Long wid);
    /**
     * 仓库内是否有同名材料
     *
     * @param mName 仓库ID
     * @return 结果
     */
    public int selectMaterialCount(HashMap map);/**
     * 仓库内是否有同名材料
     *
     * @param mName 仓库ID
     * @return 结果
     */
    public int selectMaterialCountName(@Param("mName")String mName);
    /** @Description:
    * @Param: [mName]
    * @returns: int
    * @Author: Administrator
    * @Date: 2020/12/24 15:34
    **/

    public int selectMaterialCountByid(HashMap map);


    /**
     * 删除材料
     *
     * @param mId 材料ID
     * @return 结果
     */
    public int deleteMaterialById(Long mId);
    /**
     * 删除材料
     *
     * @param mId 材料ID
     * @return 结果
     */
    public int insertMaterialWarehouse(@Param("mid") Long mId, @Param("wid")long wId);
    //添加中间表
    public int insertMaterialWarehousename(HashMap map);

    /**
     * 删除材料仓库中间表
     *
     * @return 结果
     */
    public int deleteMaterialWarehouseById(HashMap map);

    //返回所有单位
    List<String> reunits();

    //出入库回显
    List<PickCondition> selectMatById(HashMap<String, Object> map);

    //入库
    int addMat(PickCondition pickCondition);

    //在仓库记录种插入一条数据
    int addWareRecord(PickCondition pickCondition);

    //入库前查询数量
    int selectMaterialNum(HashMap<String, Object> map);

    //去仓库修改材料数量
    int updateSum(HashMap<String, Object> map);

    //返回所有项目名字
    List<String> reproname();


    //去项目操作记录中插入数据
    int insertPickRecord(PickCondition pickCondition);

    //去项目明细中插入数据
    int insertMaterialByCondition(PickCondition pickCondition);

    //查询项目中是否有一个材料的大类
    Object selectMid(HashMap<String,Object> map);

    //根据项目名字查项目id
    Long selectpIdByPname(String wrWhereabouts);

    //在项目跟材料的的关联表中插入数据
    int insertProMat(HashMap<String, Object> map1);


    //根据名字查材料表有没有这个材料
    MaterialThree selectMatByname(@Param("mName") String mName, @Param("mModel") String mModel);

    //在关联表中插入数据
    int insertMatAndWares(HashMap<String, Object> hashMap);

    //查询关联表有没有数据
    int selectMatAndWares(HashMap<String, Object> hashMap);


    //查看当前材料是不是一种新材料
    int selectMatByMdId(Long mdId);

    //去仓库添加材料数量
    int addMatSum(HashMap<String, Object> map);

    //根据名字查id
    Long selectWareIdByName(String wareName);

    List<MaterialThree> queryMaterialList(MaterialThree MaterialThree);

    Double startexpect(Date date);
    Double endexpect(Date date);
    Double inStorageAFor(Date date);
    Double inStorageBFor(Date date);
    Double outStorageAFor(Date date);
    Double outStorageBFor(Date date);

    List<Map> inStorageAForMaterial(@Param("date") String date);

    List<Map> inStorageBForMaterial(@Param("date")String date);

    List<Map> outStorageAForMaterial(@Param("date")String date);

    List<Map> outStorageBForMaterial(@Param("date") String date);

    List<Map> endexpectMaterial();
    Double querySumMoney();
}
